class ReactiveTypeHandler
extends java.lang.Object
Publisher
through the
ReactiveAdapterRegistry
.
Such return values may be bridged to a ResponseBodyEmitter
for
streaming purposes at the presence of a streaming media type or based on the
generic type.
For all other cases Publisher
output is collected and bridged to
DeferredResult
for standard async request processing.
Modifier and Type | Class and Description |
---|---|
private static class |
ReactiveTypeHandler.AbstractEmitterSubscriber |
(package private) static class |
ReactiveTypeHandler.CollectedValuesList
List of collect values where all elements are a specified type.
|
private static class |
ReactiveTypeHandler.DeferredResultSubscriber |
private static class |
ReactiveTypeHandler.JsonEmitterSubscriber |
private static class |
ReactiveTypeHandler.SseEmitterSubscriber |
private static class |
ReactiveTypeHandler.TextEmitterSubscriber |
Modifier and Type | Field and Description |
---|---|
private ContentNegotiationManager |
contentNegotiationManager |
private static Log |
logger |
private ReactiveAdapterRegistry |
reactiveRegistry |
private static long |
STREAMING_TIMEOUT_VALUE |
private TaskExecutor |
taskExecutor |
private java.lang.Boolean |
taskExecutorWarning |
Constructor and Description |
---|
ReactiveTypeHandler() |
ReactiveTypeHandler(ReactiveAdapterRegistry registry,
TaskExecutor executor,
ContentNegotiationManager manager) |
Modifier and Type | Method and Description |
---|---|
private ResponseBodyEmitter |
getEmitter(MediaType mediaType) |
private java.util.Collection<MediaType> |
getMediaTypes(NativeWebRequest request) |
ResponseBodyEmitter |
handleValue(java.lang.Object returnValue,
MethodParameter returnType,
ModelAndViewContainer mav,
NativeWebRequest request)
Process the given reactive return value and decide whether to adapt it
to a
ResponseBodyEmitter or a DeferredResult . |
boolean |
isReactiveType(java.lang.Class<?> type)
Whether the type can be adapted to a Reactive Streams
Publisher . |
private void |
logExecutorWarning(MethodParameter returnType) |
private static final long STREAMING_TIMEOUT_VALUE
private static Log logger
private final ReactiveAdapterRegistry reactiveRegistry
private final TaskExecutor taskExecutor
private java.lang.Boolean taskExecutorWarning
private final ContentNegotiationManager contentNegotiationManager
public ReactiveTypeHandler()
ReactiveTypeHandler(ReactiveAdapterRegistry registry, TaskExecutor executor, ContentNegotiationManager manager)
public boolean isReactiveType(java.lang.Class<?> type)
Publisher
.@Nullable public ResponseBodyEmitter handleValue(java.lang.Object returnValue, MethodParameter returnType, ModelAndViewContainer mav, NativeWebRequest request) throws java.lang.Exception
ResponseBodyEmitter
or a DeferredResult
.null
if handled internally
with a DeferredResult
.java.lang.Exception
private java.util.Collection<MediaType> getMediaTypes(NativeWebRequest request) throws HttpMediaTypeNotAcceptableException
private ResponseBodyEmitter getEmitter(MediaType mediaType)
private void logExecutorWarning(MethodParameter returnType)